package com.builder;

import java.util.ArrayList;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

import com.model.Acuerdo;
import com.view.AcuerdoDetalleView;
import com.view.AcuerdoView;
import com.view.ProveedorView;

@ManagedBean
@ViewScoped
@SuppressWarnings("serial")
public class AcuerdoBuilder extends BaseBuilder<AcuerdoView, Acuerdo> {

	@ManagedProperty("#{proveedorBuilder}")
	private ProveedorBuilder proveedorBuilder;

	@ManagedProperty("#{acuerdoDetalleBuilder}")
	private AcuerdoDetalleBuilder acuerdoDetalleBuilder;

	@Override
	public Acuerdo toDomain(AcuerdoView view) {
		return new Acuerdo(view.getId(),
				view.getProveedor() != null ? proveedorBuilder.toDomain(view
						.getProveedor()) : null, view.getFechaDesde(),
				view.getFechaHasta(), view.getDescuentoPorMontoTotal(),
				view.getMonto(), view.getDescuento(),
				view.getListaAcuerdoDetalle() != null ? acuerdoDetalleBuilder
						.toDomain(view.getListaAcuerdoDetalle()) : null);
	}

	@Override
	public AcuerdoView toView(Acuerdo model) {
		return new AcuerdoView(model.getID(),
				model.getProveedor() != null ? proveedorBuilder.toView(model
						.getProveedor()) : new ProveedorView(),
				model.getFechaDesde(), model.getFechaHasta(),
				model.getDescuentoPorMontoTotal(), model.getMonto(),
				model.getDescuento(),
				model.getListaAcuerdoDetalle() != null ? acuerdoDetalleBuilder
						.toView(model.getListaAcuerdoDetalle())
						: new ArrayList<AcuerdoDetalleView>());
	}

	public ProveedorBuilder getProveedorBuilder() {
		return proveedorBuilder;
	}

	public void setProveedorBuilder(ProveedorBuilder proveedorBuilder) {
		this.proveedorBuilder = proveedorBuilder;
	}

	public AcuerdoDetalleBuilder getAcuerdoDetalleBuilder() {
		return acuerdoDetalleBuilder;
	}

	public void setAcuerdoDetalleBuilder(
			AcuerdoDetalleBuilder acuerdoDetalleBuilder) {
		this.acuerdoDetalleBuilder = acuerdoDetalleBuilder;
	}

}
